<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<link REL="STYLESHEET" HREF="../../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
<title>Plug-in manifest</title>
</head>
<body lang="EN-US" link=blue vlink=blue bgcolor="#FFFFFF">
  <h1>Eclipse platform plug-in manifest</h1>
  <p>Version 3.0+ - Last revised January 25, 2004</p>
  <p>The manifest markup definitions below make use of various naming tokens and 
    identifiers. To eliminate ambiguity, here are some production rules for these 
    [are referenced in text below]. In general, all identifiers are case-sensitive. 
  </p>
  <pre>SimpleToken := sequence of characters from ('a-z','A-Z','0-9')&nbsp;
ComposedToken := SimpleToken | (SimpleToken '.' ComposedToken)&nbsp;
JavaClassName := ComposedToken&nbsp;
PlugInId := ComposedToken
ExtensionId := SimpleToken&nbsp;
ExtensionPointId := SimpleToken&nbsp;
ExtensionPointReference := ExtensionPointID | (PlugInId '.' ExtensionPointId)</pre>
  <p>The remainder of this section describes the plugin.xml file structure as 
    a series of DTD fragments. File <a href="plugin_dtd.html">plugin.dtd</a> presents 
    the DTD definition in its entirety. </p>
  <pre>&lt;?xml encoding=&quot;US-ASCII&quot;?&gt;&nbsp;
&lt;!ELEMENT plugin (extension-point*, extension*)&gt;&nbsp;
</pre>
The &lt;plugin&gt; element defines the body of the manifest. It optionally contains
declarations of any new extension points being introduced by the
plug-in, as well as configuration of functional extensions (configured into
extension points defined by other plug-ins, or introduced by this plug-in).
The &lt;plugin&gt; element has no attributes.
  <p>The XML DTD construction rule <tt><i>element</i></tt><tt>*</tt> means zero 
    or more occurrences of the element; <tt><i>element</i></tt><tt>?</tt> means 
    zero or one occurrence of the element; and <tt><i>element</i></tt><tt>+</tt> 
    (used below) means one or more occurrences of the element. </p>
  <p>The platform's architecture is based on the notion of configurable extension 
    points. The platform itself predefines a set of extension points that cover 
    the task of extending the platform and desktop (for example, adding menu actions, 
    contributing embedded editor). In addition to the predefined extension points, 
    each supplied plug-in can declare additional extension points. By declaring 
    an extension point the plug-in is essentially advertising the ability to configure 
    the plug-in function with externally supplied extensions. For example, the 
    Page Builder plug-in may declare an extension point for adding new Design 
    Time Controls (DTCs) into its builder palette. This means that the Page Builder 
    has defined an architecture for what it means to be a DTC and has implemented 
    the code that looks for DTC extensions that have been configured into the 
    extension points. </p>
  <pre>&lt;!ELEMENT extension-point EMPTY&gt;&nbsp;&nbsp;
&lt;!ATTLIST extension-point&nbsp;
&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #REQUIRED&nbsp;
&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #REQUIRED&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp; schema&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #IMPLIED&nbsp;
&gt;</pre>
  <p>The &lt;extension-point&gt; element has the following attributes: 
  </p>
  <ul type=disc>
    <li><b>name - </b>user-displayable (translatable) 
      name for the extension point</li>
    <li><b>id - </b>simple id token, unique within 
      this plug-in. The token cannot contain dot (.) or whitespace.</li>
    <ul type=circle>
      <li>[production rule: ExtensionPointId]</li>
    </ul>
    <li><b>schema</b> - schema specification for 
      this extension point. The exact details are being defined as part of the 
      Plug-In Development Environment (PDE). The schema is currently not used 
      at runtime. The reference is a file name relative to the plug-in installation 
      location.</li>
  </ul>
  <p>Actual extensions are configured into extension points (predefined, 
    or newly declared in this plug-in) in the &lt;extension&gt; section. The configuration 
    information is specified as well-formed XML contained between the &lt;extension&gt; 
    and &lt;/extension&gt; tags. The platform does not specify the actual form 
    of the configuration markup (other than requiring it to be well-formed XML). 
    The markup is defined by the supplier of the plug-in that declared the extension 
    point. The platform does not actually interpret the configuration markup. 
    It simply passes the configuration information to the plug-in as part of the 
    extension point processing (at the time the extension point logic queries 
    all of its configured extensions). </p>
  <pre>&lt;!ELEMENT extension ANY&gt;&nbsp;
&lt;!ATTLIST extension&nbsp;
&nbsp; point&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #REQUIRED&nbsp;
&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #IMPLIED&nbsp;
&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #IMPLIED&nbsp;
&gt;</pre>
  <p>The &lt;extension&gt; element has the following attributes: 
  </p>
  <ul type=disc>
    <li><b>point - </b>reference to an extension 
      point being configured. The extension point can be one defined in this plug-in 
      or another plug-in</li>
    <ul type=circle>
      <li>[production rule: ExtensionPointReference]</li>
    </ul>
    <li><b>id - </b>optional identifier for this 
      extension point configuration instance. This is used by extension points 
      that need to uniquely identify (rather than just enumerate) the specific 
      configured extensions. The identifier is specified as a simple token unique 
      within the definition of the declaring plug-in. When used globally, the 
      extension identifier is qualified by the plug-in identifier</li>
    <ul type=circle>
      <li>[production rule: ExtensionId]</li>
    </ul>
    <li><b>name - </b>user-displayable (translatable) 
      name for the extension</li>
  </ul>
  <p><b>Important:</b> The content of the &lt;extension&gt; element 
    is declared using the <tt><span
style='font-size:10.0pt;font-family:"Courier New"'>ANY</span></tt> rule. This 
    means that any well-formed XML can be specified within the extension configuration 
    section (between &lt;extension&gt; and &lt;/extension&gt; tags). </p>
  <p><a href="hglegal.htm"><img src="ngibmcpy.gif" alt="Copyright IBM Corporation and others 2000, 2003." border="0" width="250" height="12"></a></p>
</body>
</html>
